package com.thm.tfast.modules.sys.service;

import com.thm.tfast.modules.sys.model.SysUser;
import com.thm.tfast.modules.sys.model.vo.dict.DictItemVo;
import com.thm.tfast.modules.sys.model.vo.menu.MenuVo;
import com.thm.tfast.modules.sys.model.vo.permission.PermissionVo;
import com.thm.tfast.modules.sys.model.vo.resource.ResourceVo;
import com.thm.tfast.modules.sys.model.vo.role.RoleVo;

import java.util.List;

/**
 * @ClassName SysUserCacheService
 * @Author THM
 * @Date 2022/10/10 11:31
 * @Version 1.0
 * @Description 用户缓存管理Service
 */
public interface SysCacheService {
    /**
     * 获取验证码缓存
     */
    String getCode(Long key);

    /**
     * 设置验证码缓存
     */
    void setCode(Long key, String verCode);

    /**
     * 删除验证码缓存
     */
    void delCode(Long key);

    /**
     * 获取缓存用户token
     */
    String getToken(String username);

    /**
     * 设置缓存用户token
     */
    void setToken(String username, String token);

    /**
     * 删除用户token缓存
     *
     * @param username
     */
    void delToken(String username);

    /**
     * 获取缓存后台用户信息
     */
    SysUser getUser(String username);

    /**
     * 设置缓存后台用户信息
     */
    void setUser(SysUser sysUser);

    /**
     * 删除后台用户缓存
     */
    void delUser(String username);

    /**
     * 获取缓存用户角色集合
     */
    List<RoleVo> getRole(Long userId);

    /**
     * 设置缓存后台用户角色信息
     */
    void setRole(Long userId, List<RoleVo> roleList);

    /**
     * 删除后台用户角色缓存
     */
    void delRole(Long userId);

    /**
     * 获取缓存用户菜单集合
     */
    List<MenuVo> getMenu(Long userId);

    /**
     * 设置缓存后台用户菜单信息
     */
    void setMenu(Long userId, List<MenuVo> menuList);

    /**
     * 删除后台用户菜单缓存
     */
    void delMenu(Long userId);

    /**
     * 获取缓存用户菜单集合
     */
    List<PermissionVo> getPermission(Long userId);

    /**
     * 设置缓存后台用户菜单信息
     */
    void setPermission(Long userId, List<PermissionVo> permissionList);

    /**
     * 删除后台用户菜单缓存
     */
    void delPermission(Long userId);

    /**
     * 删除所有角色缓存
     */
    void delRoleByRoleId(Long roleId);

    /**
     * 删除所有菜单缓存
     */
    void delMenuByRoleId(Long roleId);

    /**
     * 删除所有权限缓存
     *
     * @param roleId
     */
    void delPermissionByRoleId(Long roleId);

    /**
     * 获取资源缓存
     */
    List<ResourceVo> getResource();

    /**
     * 设置资源缓存
     */
    void setResource(List<ResourceVo> resourceList);

    /**
     * 删除资源缓存
     */
    void delResource();

    /**
     * 获取字典项缓存
     */
    List<DictItemVo> getDict(String type);

    /**
     * 设置字典项缓存
     */
    void setDict(String type, List<DictItemVo> dictItemVos);

    /**
     * 删除字典项缓存
     */
    void delDict(String type);

}
